package io.renren.common.utils;

/**
 * 半角和全角字符相互转换
 */
public class DBCAndSBC {

    private DBCAndSBC() {
        // 这个类不能外部实例化
    }

    /**
     * 半角转成全角
     * <p>
     * 半角空格32,全角空格12288,其他字符半角33~126,其他字符全角65281~65374,相差65248
     *
     * @param input
     * @return
     */
    public static String DBCToSBC(String input) {
        char[] cc = input.toCharArray();
        for (int i = 0; i < cc.length; i++) {
            if (cc[i] == 32) {
                // 表示空格
                cc[i] = (char) 12288;
                continue;
            }
            if (cc[i] < 127 && cc[i] > 32) {
                cc[i] = (char) (cc[i] + 65248);
            }
        }
        return new String(cc);
    }

    /**
     * 全角转半角
     * <p>
     * 半角空格32,全角空格12288,其他字符半角33~126,其他字符全角65281~65374,相差65248
     *
     * @param input
     * @return
     */
    public static String SBCToDBC(String input) {
        char[] cc = input.toCharArray();
        for (int i = 0; i < cc.length; i++) {
            if (cc[i] == 12288) {
                // 表示空格
                cc[i] = (char) 32;
                continue;
            }
            if (cc[i] > 65280 && cc[i] < 65375) {
                cc[i] = (char) (cc[i] - 65248);
            }
        }
        return new String(cc);
    }

    public static void main(String[] args) {
        System.out.println("全角转半角转变：" + SBCToDBC("哈哈１２３　哈哈１２３４５６"));
        System.out.println("半角转全角转变：" + DBCToSBC("哈哈123 哈哈123456"));
    }
}
